package com.gep.controlador;

import java.util.List;

import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Toolbarbutton;
import org.zkoss.zul.Window;

import com.gep.dto.SolicitacaoDTO;
import com.gep.dto.StatusDTO;
import com.gep.dto.UsuarioDTO;
import com.gep.session.SolicitacaoBORemota;
import com.gep.session.UsuarioBORemota;

public class ControladorHomeEngenheiroZul extends Window {

	/**
	 * 
	 */
	private static final Logger LOGGER = Logger
			.getLogger(ControladorHomeEngenheiroZul.class);

	private static final long serialVersionUID = 1L;

	public SolicitacaoBORemota solicitacaoBORemota;

	public UsuarioBORemota usuarioBORemota;

	private List<SolicitacaoDTO> listaBuscaSol;
	
	private List<SolicitacaoDTO> listaBuscaEnc;
	
	private List<SolicitacaoDTO> listaBuscaRec;

	private SolicitacaoDTO solicitacaoDTObusca;

	public ControladorHomeEngenheiroZul() {
		try {
			InitialContext ctx;

			ctx = new InitialContext();
			this.solicitacaoBORemota = (SolicitacaoBORemota) ctx
					.lookup("ejb/gep/SolicitacaoBORemota");
			this.usuarioBORemota = (UsuarioBORemota) ctx
					.lookup("ejb/gep/UsuarioBORemota");
		} catch (Exception exp) {
			exp.printStackTrace(System.out);
		}
		solicitacaoDTObusca = new SolicitacaoDTO();
	}

	public void calcularQuantidade() {
		UsuarioDTO usuarioEngenheiro;
		usuarioEngenheiro = ControladorLoginZul.getUsuarioDTOSessao();
		StatusDTO statusDTO = new StatusDTO();
		statusDTO = statusDTO.retornaStatus(StatusDTO.SOLICITADO);
		solicitacaoDTObusca.setStatusDTO(statusDTO);
		solicitacaoDTObusca.setUsuarioEngenheiroDTO(usuarioEngenheiro);
		listaBuscaSol = solicitacaoBORemota
				.consultarSolicitacao(solicitacaoDTObusca);
		if (listaBuscaSol != null) {
			Integer quantidade = listaBuscaSol.size();

			Toolbarbutton labelqtd = (Toolbarbutton) this
					.getFellow("qtdSolicitado");
			labelqtd.setLabel("" + quantidade);
		}
		usuarioEngenheiro = ControladorLoginZul.getUsuarioDTOSessao();
		statusDTO = new StatusDTO();
		statusDTO = statusDTO.retornaStatus(StatusDTO.ENCAMINHADO);
		solicitacaoDTObusca.setStatusDTO(statusDTO);
		listaBuscaEnc = solicitacaoBORemota
				.consultarSolicitacao(solicitacaoDTObusca);
		if (listaBuscaEnc != null) {
			Integer quantidade = listaBuscaEnc.size();

			Toolbarbutton labelqtd = (Toolbarbutton) this
					.getFellow("qtdEncaminhado");
			labelqtd.setLabel("" + quantidade);
		}
		usuarioEngenheiro = ControladorLoginZul.getUsuarioDTOSessao();
		statusDTO = new StatusDTO();
		statusDTO = statusDTO.retornaStatus(StatusDTO.RECEBIDO);
		solicitacaoDTObusca.setStatusDTO(statusDTO);
		listaBuscaRec = solicitacaoBORemota
				.consultarSolicitacao(solicitacaoDTObusca);
		if (listaBuscaRec != null) {
			Integer quantidade = listaBuscaRec.size();

			Toolbarbutton labelqtd = (Toolbarbutton) this
					.getFellow("qtdRecebido");
			labelqtd.setLabel("" + quantidade);
		}

	}

	public void redirecionarSolicitado() {
		if (listaBuscaSol.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("listaSolicitacao", listaBuscaSol);
			Executions.sendRedirect("/zul/solicitacao/consultaSolicitacao.zul");
		}
	}
	public void redirecionarEncaminhado(){	
		if (listaBuscaEnc.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("listaSolicitacao", listaBuscaEnc);
			Executions.sendRedirect("/zul/solicitacao/consultaSolicitacao.zul");
		}
	}
	public void redirecionarRecebido(){
		if (listaBuscaRec.size() > 0) {
			HttpServletRequest request = (HttpServletRequest) Executions
					.getCurrent().getNativeRequest();
			HttpSession session = request.getSession(false);
			session.setAttribute("listaSolicitacao", listaBuscaRec);
			Executions.sendRedirect("/zul/solicitacao/consultaSolicitacao.zul");
		}
	}

	public List<SolicitacaoDTO> getListaBuscaSol() {
		return listaBuscaSol;
	}
	
	public List<SolicitacaoDTO> getListaBuscaEnc() {
		return listaBuscaEnc;
	}
	
	public List<SolicitacaoDTO> getListaBuscaRec() {
		return listaBuscaRec;
	}

	public void setListaBuscaSol(List<SolicitacaoDTO> listaBuscaSol) {
		this.listaBuscaSol = listaBuscaSol;
	}
	
	public void setListaBuscaEnc(List<SolicitacaoDTO> listaBuscaEnc) {
		this.listaBuscaEnc = listaBuscaEnc;
	}
	
	public void setListaBuscaRec(List<SolicitacaoDTO> listaBuscaRec) {
		this.listaBuscaRec = listaBuscaRec;
	}

}
